package com.java.day12.list;

import java.util.LinkedList;

/**
 * 练习：
 * 给定一个包含小括号的字符串，例如"1+((a+b)/c)+5/(2+a)",请写一个方法判断该字符串中的小括号是否成对出现。
 */
public class StackDemo02 {

    public static void main(String[] args) {
        String s = "1+((a+b)/c)+5/(2+a)";
        String s1 = "1+((a+b)/c)+5/(2+a))";

        boolean flag = testXkh(s);
        boolean flag1 = testXkh(s1);
        System.out.println(flag);
        System.out.println(flag1);
    }

    private static boolean testXkh(String s) {
        LinkedList<Character> stack = new LinkedList<>();
        char[] charArray = s.toCharArray();

        //遍历字符串版
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(') {
                stack.push(charArray[i]);
            }
            if (c == ')') {
                if (stack.isEmpty()) {
                    return false;
                }
                stack.pop();
            }
        }

        //遍历数组
//        for (int i = 0; i < charArray.length; i++) {
//            if (charArray[i] == '(') {
//                stack.push(charArray[i]);
//            }
//            if (charArray[i] == ')') {
//                if (stack.isEmpty()) {
//                    return false;
//                }
//                stack.pop();
//            }
//        }
        return stack.isEmpty();
    }

}
